home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 0.9.1.3 stable / flock-0.9.1.3.en-US.win32.exe / flock / chrome / browser.jar / content / browser / safebrowsing / sb-loader.js < prev    next >
Text File  |  2006-08-23  |  7KB  |  196 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is Google Safe Browsing.
  15.  *
  16.  * The Initial Developer of the Original Code is Google Inc.
  17.  * Portions created by the Initial Developer are Copyright (C) 2006
  18.  * the Initial Developer. All Rights Reserved.
  19.  *
  20.  * Contributor(s):
  21.  *   Fritz Schneider <fritz@google.com> (original author)
  22.  *
  23.  * Alternatively, the contents of this file may be used under the terms of
  24.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  25.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  26.  * in which case the provisions of the GPL or the LGPL are applicable instead
  27.  * of those above. If you wish to allow use of your version of this file only
  28.  * under the terms of either the GPL or the LGPL, and not to allow others to
  29.  * use your version of this file under the terms of the MPL, indicate your
  30.  * decision by deleting the provisions above and replace them with the notice
  31.  * and other provisions required by the GPL or the LGPL. If you do not delete
  32.  * the provisions above, a recipient may use your version of this file under
  33.  * the terms of any one of the MPL, the GPL or the LGPL.
  34.  *
  35.  * ***** END LICENSE BLOCK ***** */
  36.  
  37.  
  38. /**
  39.  * This file is included into the main browser chrome from
  40.  * browser/base/content/global-scripts.inc
  41.  */
  42.  
  43. var safebrowsing = {
  44.   controller: null,
  45.   phishWarden: null,
  46.  
  47.   // We set up the web progress listener immediately so we don't miss any
  48.   // phishing urls.  Since the phishing infrastructure isn't loaded yet, we
  49.   // just store the urls in a list.
  50.   progressListener: null,
  51.   progressListenerCallback: {
  52.     requests: [],
  53.     onDocNavStart: function(request, url) {
  54.       this.requests.push({
  55.         'request': request,
  56.         'url': url
  57.       });
  58.     }
  59.   },
  60.  
  61.   startup: function() {
  62.     setTimeout(safebrowsing.deferredStartup, 2000);
  63.  
  64.     var helpMenu = document.getElementById("menu_HelpPopup");
  65.     if (helpMenu) {
  66.       helpMenu.addEventListener("popupshowing",
  67.                                 safebrowsing.setReportPhishingMenu,
  68.                                 false);
  69.     }
  70.     
  71.     // clean up
  72.     window.removeEventListener("load", safebrowsing.startup, false);
  73.   },
  74.   
  75.   deferredStartup: function() {
  76.     var appContext = Cc["@mozilla.org/safebrowsing/application;1"]
  77.                      .getService().wrappedJSObject;
  78.  
  79.     // Each new browser window needs its own controller. 
  80.  
  81.     var contentArea = document.getElementById("content");
  82.  
  83.     var phishWarden = new appContext.PROT_PhishingWarden(
  84.           safebrowsing.progressListener);
  85.     safebrowsing.phishWarden = phishWarden;
  86.  
  87.     // Register tables
  88.     // XXX: move table names to a pref that we originally will download
  89.     // from the provider (need to workout protocol details)
  90.     phishWarden.registerWhiteTable("goog-white-domain");
  91.     phishWarden.registerWhiteTable("goog-white-url");
  92.     phishWarden.registerBlackTable("goog-black-url");
  93.     phishWarden.registerBlackTable("goog-black-enchash");
  94.  
  95.     // Download/update lists if we're in non-enhanced mode
  96.     phishWarden.maybeToggleUpdateChecking();
  97.     var tabWatcher = new appContext.G_TabbedBrowserWatcher(
  98.         contentArea,
  99.         "safebrowsing-watcher",
  100.         true /*ignore about:blank*/);
  101.     safebrowsing.controller = new appContext.PROT_Controller(
  102.         window,
  103.         tabWatcher,
  104.         phishWarden);
  105.     
  106.     // The initial pages may be a phishing site (e.g., user clicks on a link
  107.     // in an email message and it opens a new window with a phishing site),
  108.     // so we need to check all requests that fired before deferredStartup.
  109.     if (!phishWarden.phishWardenEnabled_) {
  110.       safebrowsing.progressListenerCallback.requests = null;
  111.       safebrowsing.progressListenerCallback.onDocNavStart = null;
  112.       safebrowsing.progressListenerCallback = null;
  113.       safebrowsing.progressListener = null;
  114.       return;
  115.     }
  116.  
  117.     var pendingRequests = safebrowsing.progressListenerCallback.requests;
  118.     for (var i = 0; i < pendingRequests.length; ++i) {
  119.       var request = pendingRequests[i].request;
  120.       var url = pendingRequests[i].url;
  121.  
  122.       phishWarden.onDocNavStart(request, url);
  123.     }
  124.     // Cleanup
  125.     safebrowsing.progressListenerCallback.requests = null;
  126.     safebrowsing.progressListenerCallback.onDocNavStart = null;
  127.     safebrowsing.progressListenerCallback = null;
  128.     safebrowsing.progressListener = null;
  129.   },
  130.  
  131.   /**
  132.    * Clean up.
  133.    */
  134.   shutdown: function() {
  135.     if (safebrowsing.controller) {
  136.       // If the user shuts down before deferredStartup, there is no controller.
  137.       safebrowsing.controller.shutdown();
  138.     }
  139.     if (safebrowsing.phishWarden) {
  140.       safebrowsing.phishWarden.shutdown();
  141.     }
  142.     var helpMenu = document.getElementById("menu_HelpPopup");
  143.     if (helpMenu) {
  144.       helpMenu.removeEventListener("popupshowing",
  145.                                    safebrowsing.setReportPhishingMenu,
  146.                                    false);
  147.     }
  148.     
  149.     window.removeEventListener("unload", safebrowsing.shutdown, false);
  150.   },
  151.  
  152.   setReportPhishingMenu: function() {
  153.     var uri = getBrowser().currentURI;
  154.     if (!uri)
  155.       return;
  156.  
  157.     var broadcaster = document.getElementById("reportPhishingBroadcaster");
  158.     if (!broadcaster)
  159.       return;
  160.  
  161.     var progressListener =
  162.       Cc["@mozilla.org/browser/safebrowsing/navstartlistener;1"]
  163.       .createInstance(Ci.nsIDocNavStartProgressListener);
  164.     broadcaster.setAttribute("disabled", progressListener.isSpurious(uri));
  165.   },
  166.   
  167.   /**
  168.    * Used to report phishing pages.
  169.    * @return String the report phishing URL.
  170.    */
  171.   getReportPhishingURL: function() {
  172.     var appContext = Cc["@mozilla.org/safebrowsing/application;1"]
  173.                      .getService().wrappedJSObject;
  174.     var reportUrl = appContext.getReportPhishingURL();
  175.     
  176.     var pageUrl = getBrowser().currentURI.asciiSpec;
  177.     reportUrl += "&url=" + encodeURIComponent(pageUrl);
  178.  
  179.     return reportUrl;
  180.   }
  181. }
  182.  
  183. // Set up our request listener immediately so we don't miss
  184. // any url loads.  We do the actually checking in the deferredStartup
  185. // method.
  186. safebrowsing.progressListener =
  187.   Cc["@mozilla.org/browser/safebrowsing/navstartlistener;1"]
  188.   .createInstance(Ci.nsIDocNavStartProgressListener);
  189. safebrowsing.progressListener.callback =
  190.   safebrowsing.progressListenerCallback;
  191. safebrowsing.progressListener.enabled = true;
  192. safebrowsing.progressListener.delay = 0;
  193.  
  194. window.addEventListener("load", safebrowsing.startup, false);
  195. window.addEventListener("unload", safebrowsing.shutdown, false);
  196.